Shell คืออะไร
ผู้ทีเริ่มใช้งาน Unix หรือ Linux อาจจะได้ยินคำว่า shell กันบ่อยๆ และจริงๆ shell คืออะไร หละ ? ตามความหมายแล้วมันคือตัวแปลงคำสั่งที่ช่วยให้ผู้ใช้งานสามารถเข้าถึงระบบ operating system มีด้วยกัน 2 แบบคือ
- CLI – Command line interface รับคำสั่งโดยข้อมูล text และแสดงผลในรูปแบบ text เช่นกัน
- GUI – Graphical user interface รับคำสั่งโดยอาศัย mouse และ รูปบนจอ monitor
ขึ้นอยู่กับระบบ computer ที่ใช้งานว่าออกแบบมาสำหรับงานประเภทไหน โดยคำว่า “shell” มีที่มาจากการที่มันทำหน้าที่เป็น layer ครอบคลุมการทำงานของ Kernel อีกที
ส่วนมากแล้ว ตัว shell ไม่ได้มีการเชื่อมต่อโดยตรงภายใต้ Kernel ถึงแม้ว่าตัว shell จะสื่อสารกับผู้ใช้งานผ่านทางอุปกรณ์ที่เชื่อมต่อกับ computer แต่ shell ก็ยังคงใช้ Kernel API เหมือนๆกับ application ที่ใช้งานกัน โดย shell จะเข้ามาบริการจัดการระบบโดยอาศัยการแปลงคำสั่งที่ user ป้อนเข้ามา และนำผลลัพธ์กลับไปแสดง ซึ่งการที่ shell ทำงานเหมือน application ทำให้ง่ายต้องการเปลี่ยนแปลงไปใช้ application อื่นที่ทำงานเหมือนกัน นอกจากนี้สำหรับ shell ที่ทำงานในดับภายใน (local system) ยังมีวิธีในการที่ผู้ใช้งานภายนอกสามารถเข้ามาใช้งานได้โดยอาศัย remote access เช่น secure shell protocol ที่นิยมใช้งานกันในรูปแบบ text command line และก็ยังมี remote desktop ที่ใช้งานแบบ GUI ให้สามารถเข้ามา remote จัดการได้จากภายนอก
Text Shell (CLI)
Command-line interface หรือ CLI เป็น shell ชนิดเริ่มแรกที่อาศัยเพียง keyboard ในการทำงานส่งข้อมูลให้กับ OS เช่น การ load ข้อมูล application, แสดงข้อมูล file หรือ เก็บข้อมูลของผู้ใช้งานเอง โดยระบบปฏิบัติการ (OS) ประเภท Unix มักจะมีจำนวน Shell program ที่หลากหลายชนิดมาก ด้วยความหลากหลายของคำสั่ง รวมถึง ความสามารถต่างๆที่แต่กต่างกัน แต่สำหรับบาง OS ก็อาจจะมี CLI แค่ชนิดเดียวเช่น MS-DOS
ลักษณะของ shell prompt คือ $ หรือมักเรียกกันว่า command prompt เมื่อ prompt นี้แสดงขึ้นมาแสดงว่าระบบเตรียมรอรับคำสั่ง โดย shell จะอ่านจาก input ข้อมูลที่ผู้ใช้ป้อนเข้าไปก่อน enter และทำงานด้วยวิธีตรวจสอบข้อมูลของคำแรกที่ป้อนเข้าว่าคำนั้นไม่ใช้กลุ่มตัวอักษรที่ไม่มีความหมาย รวมถึง space และ tab
- Bourne shell (sh)
- Debian Almquist shell (dash)
- Bourne-Again shell (bash)
- C shell (csh)
Shell ทำการอ่านค่า configure file ตามสภาพแวดล้อมที่ต่างกันของ shell โดย file พวกนี้มักจะประกอบด้วยคำสั่งเฉพาะของ shell แต่ละชนิด รวมถึงพวกตัวแปรต่างๆ และก็รูปลักษณ์ที่แสดงออกมา ตารางต่อไปนี้แสดงให้เห็นถึง configure file ของ shell แต่ละชนิด
sh | ksh | csh | tcsh | bash | zsh | |
/etc/.login | login | login | ||||
/etc/csh.cshrc | yes | yes | ||||
/etc/csh.login | login | login | ||||
~/.tcshrc | yes | |||||
~/.cshrc | yes | yes | ||||
~/etc/ksh.kshrc | int. | |||||
/etc/sh.shrc | int | |||||
$ENV (typically ~/.kshrc) | int. | int. | int. | |||
~/.login | login | login | ||||
~/.logout | login | login | ||||
/etc/profile | login | login | login | login | ||
~/.profile | login | login | login | login | ||
~/.bash_profile | login | |||||
~/.bash_login | login | |||||
~/.bash_logout | login | |||||
~/.bashrc | int.+n/login | |||||
/etc/zshenv | yes | |||||
/etc/zprofile | login | |||||
/etc/zshrc | int. | |||||
/etc/zlogin | login | |||||
/etc/zlogout | login | |||||
~/.zshenv | yes | |||||
~/.zprofile | login | |||||
~/.zshrc | int. | |||||
~/.zlogin | login |
Graphical shell
Graphical shell หลักๆมีการใช้งานอยู่บน GUI ซึ่งเป็น graphical user interface โดยจะอนุญาตให้ผู้ใช้งานสามารถเข้าถึง เปิด ปิด หรือโยกย้าย รวมถึงย่อขนาดของ windows ได้ ส่วนมากแล้ว GUI จะมีลักษณะที่ประกอบด้วย desktop environment, start menu และ task bar อย่างที่เราคุ้นเคยในการใช้งาน window OS ตัวอย่างเช่น
- Window 3.x series
- Window 95 , NT
- Window XP
- Linux Desktop
Reference
- Unix คืออะไร ยูนิกซ์ คือ ระบบปฏิบัติการสำหรับ server
- Linux คืออะไร ทำงานอย่างไร ลินุกซ์ เป็นระบบปฎิบัติการชนิดหนึ่ง
- Kernel คืออะไร Kernel คือ ส่วนกลางควบคุมการทำงานทุกอย่างบน OS
- รวมคำสั่ง Unix – Linux Command line พื้นฐานเบื้องต้น
- Shell คืออะไร Unix Shell หรือ Linux Shell คือ โปรแกรมรับคำสั่งให้กับ Kernel
- Shell Script คืออะไร Shell script คือ ภาษา programming ที่ใช้บน unix linux
- การเขียน Shell Script เบื้องต้น หลักการทำงาน และ เงื่อนไขการใช้
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://en.wikipedia.org
[…] […]
[…] Script คือ การทำงานในแบบ Command-line interopreter ผ่าน Shell ทำงานได้เปรียบเสมือนภาษา program […]
[…] […]